// convert-rem-to-px.js
const fs = require('fs');
const path = require('path');

function convertRemToPx(cssContent) {
  return cssContent.replace(/(-?\d*\.?\d+)rem/g, (match, value) => {
    const pxValue = parseFloat(value) * 16;
    return Number.isInteger(pxValue) ? `${pxValue}px` : `${pxValue.toFixed(1)}px`;
  });
}

// 解析命令行参数
const args = process.argv.slice(2);
if (args.length < 1) {
  console.error('请指定输入文件，示例：node convert-rem-to-px.js input.css [output.css]');
  process.exit(1);
}

const inputFile = path.resolve(args[0]);
const outputFile = args[1]
    ? path.resolve(args[1])
    : inputFile.replace(/(\.css)$/, '-px$1');

// 带异常处理的转换流程
fs.readFile(inputFile, 'utf8', (readErr, data) => {
  if (readErr) {
    console.error(`无法读取文件: ${inputFile}`);
    console.error('错误详情:', readErr.message);
    return;
  }

  try {
    const converted = convertRemToPx(data)
        .replace(/([ :]-?)0pxpx/g, '$10px')
        .replace(/([m]-)pxpx/g, '$1px');

    fs.writeFile(outputFile, converted, 'utf8', (writeErr) => {
      if (writeErr) {
        console.error(`无法写入文件: ${outputFile}`);
        console.error('错误详情:', writeErr.message);
        return;
      }
      console.log(`✅ 转换成功！输出文件：${outputFile}`);
    });
  } catch (convertErr) {
    console.error('转换过程中发生错误:');
    console.error(convertErr.stack);
  }
});
